#include "furniture.cpp"
using namespace iotek;

int main() {
  cout << sizeof(Weight) << endl;// 4；
  cout << sizeof(Sofa) << endl;// 4；
  cout << sizeof(Bed) << endl;// 4；
  cout << sizeof(Sofabed) << endl;// 8；这里说明Sofabed有两个 weight，这也明显是不对的。

  Sofabed sb(111);
  sb.foldout();

  // 下面两行都会导致编译报错，因为混乱了。
  // cout << sb.getWeight() << endl;
  // sb.setWeight(123);
  
  // 当 Sofabed 只继承 Sofa 时，这样得不到正确的结果 111，这是因为构建对象时，Sofa的构造函数 Sofa(int) 在 cpp 中没有指定调用 Weight 类的构造，
  // 这意味着调用的是无参构造，那么就没法把 111 赋值给 m_weight 了。
  // 所以，想要正确，必须如下：
  // 1：给 Weight 类添加 Weight(int) 的构造；
  // 2：在 Sofa 类的构造中指定调用1中的构造（cpp里面）；
  // 但是这样还是解决不了Sofabed 同时继承Sofa和Bed的混乱问题。中需要 virtual 继承，见003。
  cout << sb.getWeight() << endl;

  return 0;
}